<?php

//->select(ActionDeCommunication::ID_ADC.','.ActionDeCommunication::TITRE_ADC.','.ActionDeCommunication::COMMENTAIRE_ADC.','.ActionDeCommunication::DATE_ADC.','.ActionDeCommunication::DATE_LIMITE_INSCRIPTION_ADC.','.ActionDeCommunication::NB_ETUDIANTS_MAX_ADC.','.ActionDeCommunication::NOTE_MAX_ADC.','.ActionDeCommunication::LOGIN_ENSEIGNANT_ADC.','.ActionDeCommunication::THEME_ADC.','.ActionDeCommunication::ETAT_ADC.','.ActionDeCommunication::GROUPABLE_ADC)

class Forums extends CI_Controller
{
	public function __construct()
	{
		parent::__construct();
		
		$this->load->model('ActionsDeCommunication/ActionDeCommunication');
		$this->load->model('ActionsDeCommunication/Forum');
		$this->load->model('ActionsDeCommunication/Theme');
		$this->load->model('ActionsDeCommunication/Etat');
		$this->load->model('ActionsDeCommunication/FicheForum');
		$this->load->model('ActionsDeCommunication/FicheAction');
		$this->load->model('Utilisateurs/AttenteForum');
		$this->load->model('Utilisateurs/Enseignant');
		$this->load->model('Utilisateurs/Etudiants');
		$this->load->model('Utilisateurs/Participe');
		
		include model_chemin('fonctions');
	}
	
	public function index()
	{
		$this->voirForums();
	}
	
	public function voirForums($idAction, $type = null, $filtre = null)
	{
		$data['action']=ActionDeCommunication::findById(secur($idAction, 'int'));
		if($data['action']->getGroupable() == 1)
		{
			if($filtre != null || isset($_SESSION['filtreForum']))
			{
				if($filtre == null)
					$filtre = $_SESSION['filtreForum'];
				
				$data['forums'] = Forum::findAll(secur($idAction, 'int'), null, $filtre);
				
				$_SESSION['filtreForum'] = $filtre;
			}
			else
				$data['forums'] = Forum::findAll(secur($idAction, 'int'));
			
			$data['retour'] = 'index.php/Forums/voirForums';
			
			if(isset($data['forums'][0]))
				$data['url'] = 'index.php/Forums/voirForums/'.$data['forums'][0]->getAction()->getId().'/forum/';
			
			$data['onglet_ouvert'] = 'actiondecommunication';
			$data['flash_erreur'] = $this->session->flashdata('erreur');
			
			$etu = new Etudiants();
			$etu=ActionDeCommunication::findEtudiants(secur($idAction, 'int'));
			
			$data['afficherBouton']=null;
			
			if(isset($_SESSION['utilisateurRole']))
			{
				$utilisateur = unserialize($_SESSION['utilisateur']);
				if($_SESSION['utilisateurRole'] == 'etudiant')
				{
			
					foreach($etu as $etudiant)
					{
						if($etudiant->getId() == $utilisateur->getId() && Forum::isParticipeAllForumTermine($utilisateur->getId()) && FicheAction::findByIdAction($data['action']->getId()) == false)
							$data['afficherBouton'] = 'FicheActionRemplir';
						else if ($etudiant->getId() == $utilisateur->getId() && Forum::isParticipeAllForumTermine($utilisateur->getId()) && Participe::getEtuConfirm($data['action']->getId(),$utilisateur->getId()) == null )
							$data['afficherBouton'] = 'FicheActionConfirmer';
					}
				}
				else if($_SESSION['utilisateurRole'] == 'administrateur')
				{
					if(FicheAction::findByIdAction($idAction))
							$data['afficherBoutonGenererPDF'] = true;
						else
							$data['afficherBoutonGenererPDF'] = false;
				}
			}
				
			include model_chemin('putDateJJMMAAAA');
			include model_chemin('putHoraireHHhMM');
				
			$this->load->view('Global/entete.php', $data);
			$this->load->view('Forums/v_voirForums.php', $data);
			$this->load->view('Global/piedpage.php');
		}
		else
		{
			$this->load->library('session');
			
			$this->session->set_flashdata('erreur', 'L\'action de communication demandée n\'existe pas.');
				
			redirect('index.php/ActionsDeCommunication/voirActions');
		}
	}
	
	public function detailForum($id)
	{
		$data['onglet_ouvert'] = 'actiondecommunication';
		$data['erreur'] = $this->session->flashdata('erreur');
		$data['message'] = $this->session->flashdata('message');
		
		$data['afficherBouton']=null;
		$data['afficherBoutonAdmin']=null;
		
		$data['contacter'] = null;
		$data['utilisateur'] = unserialize($_SESSION['utilisateur']);
		
		if ($data['forum'] = Forum::findById(secur($id , 'int')))
		{
			if(isset($_SESSION['utilisateurRole']))
			{
				$utilisateur = unserialize($_SESSION['utilisateur']);
				if($_SESSION['utilisateurRole'] == 'etudiant')
				{		
					if((!is_null($data['forum']->getEtudiant1()) && $data['forum']->getEtudiant1()->getId() == $utilisateur->getId() || !is_null($data['forum']->getEtudiant2()) && $data['forum']->getEtudiant2()->getId() == $utilisateur->getId()) && ($data['forum']->getEtat()->getLibelle() == 'Ouvert' || $data['forum']->getEtat()->getLibelle() == 'Complet'))
						$data['afficherBouton'] = 'Desinscription';
					else
					{
						if($data['forum']->getEtat()->getLibelle() == 'Ouvert')
							$data['afficherBouton'] = 'Inscription';
						elseif ($data['forum']->getEtat()->getLibelle() == 'Complet' && !$data['forum']->isAttenteForum($utilisateur->getId()))
							$data['afficherBouton'] = 'ListeAttente';
						elseif ($data['forum']->getEtat()->getLibelle() == 'Complet' && $data['forum']->isAttenteForum($utilisateur->getId()))
						{
							$data['rang']=$data['forum']->rangAttenteForum($utilisateur->getId());
							$data['afficherBouton'] = 'DesinscriptionListeAttente';
						}
					}
					
					if($data['forum']->getEtudiant1() != null && $utilisateur->getId() == $data['forum']->getEtudiant1()->getId() || $data['forum']->getEtudiant2() != null && $utilisateur->getId() == $data['forum']->getEtudiant2()->getId())
						$data['contacter'] = 'etudiant';
				}
				else
				{
					$fbf=FicheForum::findById($data['forum']->getId());
					if($data['forum']->getEnseignant() == null && ($data['forum']->getEtat()->getLibelle() == 'Ouvert' || $data['forum']->getEtat()->getLibelle() == 'Complet'))
						$data['afficherBouton'] = 'Inscription';
					elseif($data['forum']->getEnseignant() != null && $data['forum']->getEnseignant()->getLogin() == $utilisateur->getLogin() && $data['forum']->getEtat()->getLibelle() == 'Terminé' && $fbf==false)
						$data['afficherBouton'] = 'FicheForum';
					elseif($data['forum']->getEnseignant() != null && $data['forum']->getEnseignant()->getLogin() == $utilisateur->getLogin() && $data['forum']->getEtat()->getLibelle() == 'Terminé' && $fbf->getEtatFicheForum()==0 )
						$data['afficherBouton'] = 'FicheForumConfirm';
					
					if($_SESSION['utilisateurRole'] == 'administrateur' && ($data['forum']->getEtat()->getLibelle() == 'Ouvert' || $data['forum']->getEtat()->getLibelle() == 'Complet'))
						$data['afficherBoutonAdmin'] = 'Administration';
					elseif($_SESSION['utilisateurRole'] == 'administrateur' && $data['forum']->getEtat()->getLibelle() == 'Terminé' && $fbf!=false && $fbf->getEtatFicheForum()==1)
						$data['afficherBoutonAdmin'] = 'A noter';
					elseif($_SESSION['utilisateurRole'] == 'administrateur' && $data['forum']->getEtat()->getLibelle() == 'Noté')
						$data['afficherBoutonAdmin'] = 'ModifNote';
					
					if($_SESSION['utilisateurRole'] == 'administrateur')
						$data['contacter'] = 'administrateur';
					
					if($data['forum']->getEnseignant() != null && $data['forum']->getEnseignant()->getLogin() == $utilisateur->getLogin())
						$data['contacter'] = 'enseignant';

					if($_SESSION['utilisateurRole'] == 'administrateur')
					{
						if(FicheForum::findById($id))
							$data['afficherBoutonGenererPDF'] = true;
						else
							$data['afficherBoutonGenererPDF'] = false;
					}
					
				}
				include model_chemin('putDateJJMMAAAA');
				include model_chemin('putHoraireHHhMM');
				
				$this->load->view('Global/entete.php', $data);
				$this->load->view('Forums/v_detailForum.php', $data);
				$this->load->view('Global/piedpage.php');
			}
			else
			{
				redirect(base_url().'index.php/welcome/erreur404');
			}
		}
		else
		{
			$this->load->library('session');
				
			$this->session->set_flashdata('erreur', 'Le forum demandé n\'existe pas.');
			
			$this->voirForums();
		}		

	}
	
	public function inscription($id)
	{
		$utilisateur = unserialize($_SESSION['utilisateur']);
		$forum = Forum::findById(secur($id, 'int'));
		if($_SESSION['utilisateurRole'] == 'etudiant')
			if($forum->getTitre()==Forum::LUNDI || $forum->getTitre()==Forum::LUNDI2)
				if($forum->nbEtuForum($utilisateur->getid()))
					$forum->inscrireForum($utilisateur->getId());
				else
					$this->session->set_flashdata('erreur', 'Vous êtes déjà inscrit au forum. Le nombre de participation est de 2');
			else
				$forum->inscrireForum($utilisateur->getId());
		else
			$forum->inscrireEnseignantForum($utilisateur->getLogin());
	
		$this->session->set_flashdata('erreur', 'Vous avez bien été inscrit au forum');
	
		if($forum->getTitre()==Forum::LUNDI || $forum->getTitre()==Forum::LUNDI2)
			redirect(base_url().'index.php/LundisInfo/voirLundisInfo/'.$forum->getAction()->getId());
		else
			redirect(base_url().'index.php/Forums/detailForum/'.$id);
	}
	
	public function desinscription($id)
	{
		$forum = Forum::findById(secur($id, 'int'));
		$utilisateur = unserialize($_SESSION['utilisateur']);
		$forum->desinscrireForum($utilisateur->getId());
	
		$this->session->set_flashdata('erreur', 'Vous avez bien été désinscrit du forum');
	
		if($forum->getTitre()==Forum::LUNDI || $forum->getTitre()==Forum::LUNDI2)
			redirect(base_url().'index.php/LundisInfo/voirLundisInfo/'.$forum->getAction()->getId());
		else
			redirect(base_url().'index.php/Forums/detailForum/'.$id);
	}
	
	public function inscriptionAttente($id)
	{
		$forum = Forum::findById(secur($id, 'int'));
		$utilisateur = unserialize($_SESSION['utilisateur']);
		$forum->inscrireAttenteForum($utilisateur->getId());
	
		$this->session->set_flashdata('erreur', 'Vous avez bien été inscrit au forum.');
	
		redirect(base_url().'index.php/Forums/detailForum/'.$id);
	}
	
	public function desinscriptionAttente($id)
	{
		$forum = Forum::findById(secur($id, 'int'));
		$utilisateur = unserialize($_SESSION['utilisateur']);
		$forum->desinscrireAttenteForum($utilisateur->getId());
	
		$this->session->set_flashdata('erreur', 'Vous avez bien été désinscrit du forum.');
	
		redirect(base_url().'index.php/Forums/detailForum/'.$id);
	}
	
	/**
	 * @param unknown $type soit etudiant soit enseignant soit all
	 * @param unknown $identifiant soit id etudiant soit login enseignant soit all
	 * @param int $id id du forum
	 */
	public function contacter($type, $identifiant, $id)
	{
		if(isset($_SESSION['utilisateurRole']))
		{
			if($forum = Forum::findById(secur($id, 'int')))
			{
				$utilisateur = unserialize($_SESSION['utilisateur']);
				
				$autorise = false;
				if($_SESSION['utilisateurRole'] == 'etudiant')
				{
					// vérifie que l'utilisateur appartient bien à l'action
					if($forum->getEtudiant1() != null && $utilisateur->getId() == $forum->getEtudiant1()->getId())
						$autorise = true;
					if($forum->getEtudiant2() != null && $utilisateur->getId() == $forum->getEtudiant2()->getId())
						$autorise = true;
					
					if(!$autorise)
						redirect(base_url().'index.php/welcome/erreur404');
				}
				else
				{
					// vérifie que l'utilisateur appartient bien à l'action ou qu'il s'agit de l'administrateur
					if($forum->getEnseignant()->getLogin() == $utilisateur->getLogin() || $_SESSION['utilisateurRole'] == 'administrateur')
						$autorise = true;
					if(!$autorise)
			 			redirect(base_url().'index.php/welcome/erreur404');		
				}
				
				if($type == 'etudiant')
					$destinataire[] = Etudiants::findById(secur($identifiant, 'int'))->getMail();
				elseif($type == 'enseignant')
					$destinataire[] = $forum->getEnseignant()->getMail();
				elseif($type == 'all')
				{
					if($_SESSION['utilisateurRole'] == 'etudiant')
					{
						if($forum->getEtudiant1() != null)
							if($utilisateur->getId() != $forum->getEtudiant1()->getId())
								$destinataire[] = $forum->getEtudiant1()->getMail();
						if($forum->getEtudiant2() != null)
							if($forum->getEtudiant2()->getId() != null && $utilisateur->getId() != $forum->getEtudiant2()->getId())
								$destinataire[] = $forum->getEtudiant2()->getMail();
						
						if($forum->getEnseignant() != null)
							$destinataire[] = $forum->getEnseignant()->getMail();
					}
					else
					{
						if($forum->getEtudiant1() != null)
							$destinataire[] = $forum->getEtudiant1()->getMail();
						if($forum->getEtudiant2() != null)
							$destinataire[] = $forum->getEtudiant2()->getMail();
						
						if($_SESSION['utilisateurRole'] == 'administrateur' && $forum->getEnseignant() != null && $forum->getEnseignant()->getLogin() != $utilisateur->getLogin())
							$destinataire[] = $forum->getEnseignant()->getMail();
					}
				}
				else
					redirect(base_url().'index.php/welcome/erreur404');
				
				if($destinataire == null)
					redirect(base_url().'index.php/welcome/erreur404');
				
				$_SESSION['destinataire'] = $destinataire;
				$_SESSION['objet'] =  $forum->getAction()->getTitre().' : '.$forum->getTitre();
				
				$this->load->view('Global/entete.php');
				$this->load->view('Contact/v_contact.php');
				$this->load->view('Global/piedpage.php');
			}
			else
				redirect(base_url().'index.php/welcome/erreur404');
		}
		else
			redirect(base_url().'index.php/welcome/erreur404');
	}
}

?>